<?php

namespace App\Helpers;

class ExcelColumn
{
  /**
   * 将数字转换为Excel列字母（例如：1 -> A, 26 -> Z, 27 -> AA）
   *
   * @param  int  $number
   * @return string
   */
  public static function numberToLetter(int $number): string
  {
    $result = '';

    while ($number > 0) {
      $remainder = ($number - 1) % 26;
      $result = chr(65 + $remainder) . $result;
      $number = intdiv($number - 1, 26);
    }

    return $result;
  }

  /**
   * 将Excel列字母转换为数字（例如：A -> 1, Z -> 26, AA -> 27）
   *
   * @param  string  $letter
   * @return int
   */
  public static function letterToNumber(string $letter): int
  {
    $letter = strtoupper(trim($letter));
    $result = 0;

    for ($i = 0; $i < strlen($letter); $i++) {
      $charValue = ord($letter[$i]) - 64;
      $result = $result * 26 + $charValue;
    }

    return $result;
  }
}
